<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="core" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="i18n" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="secured" uri="http://www.springframework.org/security/tags" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<!DOCTYPE html >

<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<meta http-equiv="Cache-Control" content="no-cache, private, no-store, must-revalidate" />
		<meta http-equiv="Pragma" content="no-cache" />
		<meta http-equiv="Expires" content="0" />
		
		<title><sitemesh:write property="title"/></title>
		
		<!-- FAVICON -->
		<link rel="icon" type="image/png" href="<spring:url value="/recursos/img/cssuite/favicon.ico" />" />
		
		<!-- HOJAS DE ESTILO -->
		<link type="text/css" rel="stylesheet" media="screen" href="<spring:url value="/recursos/css/uniform.default.css" />" />
		<link type="text/css" rel="stylesheet" media="screen" href="<spring:url value="/recursos/css/jquery-ui-1.10.3.custom.css" />" />
		<link type="text/css" rel="stylesheet" media="screen" href="<spring:url value="/recursos/css/jquery.validity-1.3.3.css" />" />
		<link type="text/css" rel="stylesheet" media="screen" href="<spring:url value="/recursos/css/jquery.handsontable-0.9.11.css" />" />
		<link type="text/css" rel="stylesheet" media="screen" href="<spring:url value="/recursos/css/cssuite.general.css" />" />
		
		<!-- JAVASCRIPT -->
		<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
		
		<script type="text/javascript">

	 		javascript:window.history.forward(1);
			
		</script>
		        
        <sitemesh:write property="head"/>
	</head>
	<body oncontextmenu="return false;">
		<i18n:setLocale value="${param.lang}" scope="session" />
		<i18n:requestEncoding value="UTF-8" />
		
		<div class="preloader">
			<img src="<spring:url value="/recursos/img/cssuite/preloader.gif" />" alt="<spring:message code="etiqueta.cargando" text="Cargando..." />" />
		</div>
		
		<secured:authorize ifAnyGranted="ROLE_AUTENTICADO">
			<div class="timeout">
				<spring:message code="mensaje.expiracionSesion" text="La sesión se cerrará en" />&nbsp;<span>&nbsp;</span>.
				<a href="javascript:void(0);"><spring:message code="mensaje.continuarSesion" text="Presiona aquí para mantener la sesión abierta." /></a>
			</div>
		</secured:authorize>
		
		<header>
			<div class="logo-aplicacion">
	    		<img src="<spring:url value="/recursos/img/cssuite/cssuite.png" />" />
	    		<span><spring:message code="etiqueta.version" text="Versión 1.0" /></span>
			</div>
			
			<span class="titulo-aplicacion"><spring:message code="titulo.aplicacion" text="ConstruSoft Suite" /></span>
			
			<div class="mensaje ui-corner-all">
				<span>&nbsp;</span>
				<div class="contador">
					<spring:message code="etiqueta.contador" text="Cierra en" />&nbsp;<p></p>
				</div>
			</div>
			
			<secured:authorize ifAnyGranted="ROLE_AUTENTICADO">
				<div class="informacion-usuario">
					<span><spring:message code="etiqueta.bienvenido" text="Bienvenido" />, <secured:authentication property="principal.nombreCompleto" />&nbsp;[<secured:authentication property="principal.username" />]</span>
				
					<span>
						<spring:message code="etiqueta.conectado" text="Conectado el" />&nbsp;<secured:authentication property="principal.ultimoLogin" />
						<core:if test="${!empty sessionScope.GEOLOCALIZACION}">
							<spring:message code="etiqueta.desde" text="desde" />&nbsp;<core:out value="${sessionScope.GEOLOCALIZACION.direccion}"></core:out>
							<core:if test="${!empty sessionScope.GEOLOCALIZACION.ciudad}">,&nbsp;<core:out value="${sessionScope.GEOLOCALIZACION.ciudad}"></core:out></core:if>
							<core:if test="${!empty sessionScope.GEOLOCALIZACION.region}">,&nbsp;<core:out value="${sessionScope.GEOLOCALIZACION.nombreRegion}"></core:out></core:if>
							<core:if test="${!empty sessionScope.GEOLOCALIZACION.pais && sessionScope.GEOLOCALIZACION.nombrePais != 'Reserved' }">
								,&nbsp;<core:out value="${sessionScope.GEOLOCALIZACION.nombrePais}"></core:out>
							</core:if>
						</core:if>
					</span>
					
					<span><a href="javascript:perfil();"><spring:message code="etiqueta.perfil" text="Perfil" /></a>&nbsp;|&nbsp;<a href="javascript:salir();"><spring:message code="etiqueta.salir" text="Salir" /></a></span>
				</div>
			</secured:authorize>
    	</header>
    	
    	<section>
    		<sitemesh:write property="body"/>
    	</section>
    	
    	<img class="imagen-fondo" src="<spring:url value="/recursos/img/cssuite/building.jpg" />" height="600" width="800" />
	
		<footer>
			<div class="logo-empresa">
				<span><spring:message code="etiqueta.producto" text="Un producto de" /></span>
				<img src="<spring:url value="/recursos/img/cssuite/softtech.png" />" height="58" width="94" />
			</div>
		</footer>
		
		<!-- JAVASCRIPT -->
		<script type="text/javascript" src="<spring:url value="/recursos/js/jquery-ui-1.10.3.custom.min.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/PhoneFormat.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/jquery.easing-1.3.pack.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/jquery.limitkeypress.min.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/jquery.mousewheel-3.1.3.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/jquery.if.min-1.0.2.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/jquery.uniform.min.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/jquery.idletimer.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/jquery.idletimeout.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/jquery.validity.min-1.3.3.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/jquery.handsontable-0.9.11.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/jquery.json-2.4.min.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/jquery.complexify-0.3.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/jquery.complexify.banlist-0.3.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/cssuite.paginas.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/cssuite.general.js" />"></script>
		<script type="text/javascript" src="<spring:url value="/recursos/js/cssuite.validaciones.js" />"></script>
		
		<script type="text/javascript">
			var region = 'UY';
		
		 	//Configuración general para llamadas AJAX
			jQuery(document).ajaxSend(function(event, jqxhr, settings) {
				jQuery('.preloader').css({
					'visibility':'visible'
	    		});
				jQuery('body').css({
					'opacity':'0.2'
				});
			});

			jQuery(document).ajaxError(function(event, jqxhr, settings, error) {
				//mensajeError('ERROR: ' + error, false, null);
			});
			
			jQuery(document).ajaxComplete(function(event, xhr, settings) {
							
				switch(xhr.status) {
				case 302:	//NO AUTENTICADO
					break;
				case 403:	//NO AUTORIZADO
					window.location = "inicio.do";
					break;
				case 404:	//NO ENCONTRADO
					break;
				case 500:	//ERROR
					break;
				default:	//OK
					jQuery('.preloader').css({
						'visibility':'hidden'
					});
					jQuery('body').css({
						'opacity':'1'
					});
					break;								
				}

			});
					
			jQuery(document).ready(function(){
    			
    			//Reglas para los campos de texto
				jQuery('.solo-email').limitkeypress({
					rexp: /^[A-Za-z0-9@_.]*$/ 
				});
				jQuery('.solo-numero').limitkeypress();
				jQuery('.solo-texto').limitkeypress({
					rexp: /^[A-Za-z áéíóúäëöüàèììù,.$]*$/
				});
				
    			//Uniformizando los elementos (campos de texto, combos, áreas de texto, etc.)
    			jQuery('input:not(:radio), textarea').uniform();

        		//Estilizando botones
				jQuery('button').button();

				//Tooltips
				jQuery(document).tooltip({ 
					position: {
				        my: "center bottom-5",
				        at: "center top",
				        using: function( position, feedback ) {
				        	jQuery(this).css(position);
				        	jQuery("<div>").addClass("flecha").appendTo(this);
				        }
				      },
					tooltipClass: "tooltip" 
				});

				//Mensajes de validaciones
				jQuery.extend(jQuery.validity.messages, {
				    require:'<spring:message code="mensaje.campoRequerido" text="El campo es requerido." />',

				    // Format validators:
				    match:'<spring:message code="mensaje.textoInvalido" text="El texto ingresado contiene caracteres que no corresponden." />',
				    integer:'<spring:message code="mensaje.numeroInvalido" text="Por favor, ingrese un número entero positivo." />',
				    date:'<spring:message code="mensaje.fechaInvalida" text="Por favor, ingrese una fecha válida." />',
				    email:'<spring:message code="mensaje.correoElectronicoInvalido" text="Por favor, ingrese un correo electrónico válido." />',
				    url:'<spring:message code="mensaje.urlInvalida" text="Por favor, ingrese una URL válida." />',
				    
				    // Value length messages:
				    tooLong:'<spring:message code="mensaje.cantidadMaximaCaracteres" text="Este campo acepta hasta #{max} caracteres." />',
				    tooShort:'<spring:message code="mensaje.cantidadMinimaCaracteres" text="Este campo no acepta menos de #{min} caracteres." />'
				});

				//Customización de validaciones
				jQuery.validity.outputs.cssuite = {
					    
			        start:function(){ 
			        	jQuery('input, select, textarea').removeClass('campo-error');
			        	jQuery('input, select, textarea').parent().find('span.mensaje-error-campo').remove();
			        },
			        
			        end:function(results) { 
			        	// Si existen errores, se posiciona en el primer error.
			            if (!results.valid && jQuery.validity.settings.scrollTo) {
			                //Si estoy en un formulario con múltiple páginas
			                if(jQuery('body').has('.paginas').length > 0) {
				                //Verifico si la primer página tiene errores, entonces la muestro
				                var contenedor = jQuery('.paginas');
				                if(!(contenedor.css('marginLeft') === "0px")) {
					                if(contenedor.find('#primera .mensaje-error-campo').length > 0) {
					                	primera();
						            } else if(contenedor.find('#segunda .mensaje-error-campo').length > 0) {
							            segunda();
							        }
					            }
				            }
			            }
			        },
			        
			        raise:function($obj, mensaje){
			        	mensajeErrorEnCampo($obj.attr('id'), mensaje);
			        },
			        
			        raiseAggregate:function($obj, mensaje){ 
			        	this.raise(jQuery($obj.get($obj.length - 1)), mensaje);
			        },
			    };

				jQuery.validity.setup({ 
					outputMode:'cssuite',
					scrollTo: true
				});

				<secured:authorize ifAnyGranted="ROLE_AUTENTICADO">
				
				//Reglas para los campos que representan teléfonos
				jQuery.each(jQuery('.solo-tel'), function() {
					var telefono = jQuery.trim(jQuery(this).val());
					if(telefono.length > 0) {
						//El valor se transforma a formato internacional
						var pais = jQuery.trim(countryForE164Number(telefono));
						if(pais.length == 0) {
							pais = region;
						}
						telefono = formatInternational(pais, telefono);
						jQuery(this).val(telefono);
					}

					//Eventos
					jQuery(this).focusin(function(){
						//El valor se transforma a formato local
						var telefono = jQuery(this).val();
						var pais = jQuery.trim(countryForE164Number(telefono));
						if(pais.length == 0) {
							pais = region;
						}
						telefono = formatLocal(pais, telefono);
						jQuery(this).val(telefono);
					});
					jQuery(this).focusout(function(){
						//El valor se transforma a formato internacional
						var telefono = jQuery(this).val();
						var pais = jQuery.trim(countryForE164Number(telefono));
						if(pais.length == 0) {
							pais = region;
						}
						telefono = formatInternational(region, telefono);
						jQuery(this).val(telefono);
					});
				});

				//Timeout de la sesión
				jQuery.idleTimeout('.timeout', '.timeout a', {
					idleAfter: 540,		// La advertencia se muestra después de 9 minutos de inactividad.
					keepAliveURL: 'ping.json',
					serverResponseEquals: 'true',
					titleMessage: '<spring:message code="titulo.expiracionSesion" text="Atención: %s segundos para cerrar la sesión | " />',
					onTimeout: function(){
						jQuery(this).slideUp();
						window.location = "salir.do";
					},
					onIdle: function(){
						jQuery(this).slideDown(); // Se muestra la barra.
					},
					onCountdown: function( counter ){
						jQuery(this).find("span").html( counter ); // Actualiza el contador.
					},
					onResume: function(){
						jQuery(this).slideUp(); // Se esconde la barra.
					}
				});
				</secured:authorize>
				
				<core:if test="${!empty INFORMACION}">
					mensajeInformacion('${INFORMACION}', '${redirige}', function(){
			    		if('${redirige}' === 'true') {
			    			redirige('${redireccion}');
			    		}
			    	});	
				</core:if>
				<core:if test="${!empty ERROR}">
					mensajeError('${ERROR}', '${redirige}', function(){
			    		if('${redirige}' === 'true') {
			    			redirige('${redireccion}');
			    		}
			    	});			    	
				</core:if>
    		});

    		function cancelar() {
    			redirige("inicio.do");    			
        	}

    		<secured:authorize ifAnyGranted="ROLE_AUTENTICADO">
    		function primera() {
    			pagina("0px");
    		}
    		function segunda() {
    			pagina("-920px");
    		}
    		function tercera() {
    			pagina("-1840px");
        	}
        	function cuarta() {
        		pagina("-2760px");
            }
        	
    		function pagina(width) {
    			jQuery('.paginas').stop().animate(
       				{
       					marginLeft: width
       				}, 
       				1000
       			);
        	}
    		
    		function perfil() {
	   			redirige("perfil.do");
	       	}
	
	   		function salir() {
				redirige("salir.do");
	   	   	}

	   		function tooltip(texto, comienzo, fin) {
		   		texto = jQuery.trim(texto);
		   		if(texto.length <= fin) {
		   			return texto;
		   		}
				return '<span title="' + texto + '">' + recortar(texto, comienzo, fin) + '</span>';
	   	   	}

	   		var textoHtml = function(instance, td, row, col, prop, value, cellProperties) {
   				var escaped = Handsontable.helper.stringify(value);
   			  	td.innerHTML = jQuery(td).html(escaped).html();
   			  	return td;
	   		};

	   		function mensajeListado(registros) {
		   		var contenedor = jQuery('.filtro span').empty();
		   		contenedor.append('<spring:message code="mensaje.listado.comienzo" text="Se obtuvieron" />');
		   		contenedor.append('&nbsp;<p>' + registros + '</p>&nbsp;');
		   		if(registros < 500) {
		   			contenedor.append('<spring:message code="mensaje.listado.fin" text="registros." />');
			   	} else {
			   		contenedor.append('<spring:message code="mensaje.listado.fin500" text="registros para optimizar rendimiento. Si lo que busca no se encuentra en el listado, contacte a un administrador." />');
				};
		   	}

	   		</secured:authorize>
        </script>
        
        <sitemesh:write property="script"/>
    </body>
</html>